<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>QuickDraw</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/QuickDraw"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-QuickDraw rootpage-QuickDraw skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">QuickDraw</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<style data-mw-deduplicate="TemplateStyles:r1236090951">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}@media print{body.ns-0 .mw-parser-output .hatnote{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><div role="note" class="hatnote navigation-not-searchable">For the climbing equipment, see <a href="Quickdraw" title="Quickdraw">Quickdraw</a>. For other uses, see <a href="Quickdraw_(disambiguation)" class="mw-disambig" title="Quickdraw (disambiguation)">Quickdraw (disambiguation)</a>.</div>
<style data-mw-deduplicate="TemplateStyles:r1251242444">
/* start https://en.wikipedia.org/ */
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style>
<style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}
/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1246091330">
/* start https://en.wikipedia.org/ */
.mw-parser-output .sidebar{width:22em;float:right;clear:right;margin:0.5em 0 1em 1em;background:var(--background-color-neutral-subtle,#f8f9fa);border:1px solid var(--border-color-base,#a2a9b1);padding:0.2em;text-align:center;line-height:1.4em;font-size:88%;border-collapse:collapse;display:table}body.skin-minerva .mw-parser-output .sidebar{display:table!important;float:right!important;margin:0.5em 0 1em 1em!important}.mw-parser-output .sidebar-subgroup{width:100%;margin:0;border-spacing:0}.mw-parser-output .sidebar-left{float:left;clear:left;margin:0.5em 1em 1em 0}.mw-parser-output .sidebar-none{float:none;clear:both;margin:0.5em 1em 1em 0}.mw-parser-output .sidebar-outer-title{padding:0 0.4em 0.2em;font-size:125%;line-height:1.2em;font-weight:bold}.mw-parser-output .sidebar-top-image{padding:0.4em}.mw-parser-output .sidebar-top-caption,.mw-parser-output .sidebar-pretitle-with-top-image,.mw-parser-output .sidebar-caption{padding:0.2em 0.4em 0;line-height:1.2em}.mw-parser-output .sidebar-pretitle{padding:0.4em 0.4em 0;line-height:1.2em}.mw-parser-output .sidebar-title,.mw-parser-output .sidebar-title-with-pretitle{padding:0.2em 0.8em;font-size:145%;line-height:1.2em}.mw-parser-output .sidebar-title-with-pretitle{padding:0.1em 0.4em}.mw-parser-output .sidebar-image{padding:0.2em 0.4em 0.4em}.mw-parser-output .sidebar-heading{padding:0.1em 0.4em}.mw-parser-output .sidebar-content{padding:0 0.5em 0.4em}.mw-parser-output .sidebar-content-with-subgroup{padding:0.1em 0.4em 0.2em}.mw-parser-output .sidebar-above,.mw-parser-output .sidebar-below{padding:0.3em 0.8em;font-weight:bold}.mw-parser-output .sidebar-collapse .sidebar-above,.mw-parser-output .sidebar-collapse .sidebar-below{border-top:1px solid #aaa;border-bottom:1px solid #aaa}.mw-parser-output .sidebar-navbar{text-align:right;font-size:115%;padding:0 0.4em 0.4em}.mw-parser-output .sidebar-list-title{padding:0 0.4em;text-align:left;font-weight:bold;line-height:1.6em;font-size:105%}.mw-parser-output .sidebar-list-title-c{padding:0 0.4em;text-align:center;margin:0 3.3em}@media(max-width:640px){body.mediawiki .mw-parser-output .sidebar{width:100%!important;clear:both;float:none!important;margin-left:0!important;margin-right:0!important}}body.skin--responsive .mw-parser-output .sidebar a>img{max-width:none!important}@media screen{html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-list-title,html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle{background:transparent!important}html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle a{color:var(--color-progressive)!important}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-list-title,html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle{background:transparent!important}html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle a{color:var(--color-progressive)!important}}@media print{body.ns-0 .mw-parser-output .sidebar{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><table class="sidebar nomobile nowraplinks" style="width:15em"><tbody><tr><th class="sidebar-title" style="background:#AADDBB"><a href="Quartz_(graphics_layer)" title="Quartz (graphics layer)">macOS<br>graphics model</a></th></tr><tr><th class="sidebar-heading" style="background:#ccffcc">
Rendering</th></tr><tr><td class="sidebar-content hlist">
<ul><li><i></i></li>
<li><a href="Core_OpenGL" title="Core OpenGL">Core OpenGL</a></li>
<li><a href="Quartz_2D" title="Quartz 2D">Quartz 2D</a></li>
<li><a href="Core_Image" title="Core Image">Core Image</a></li>
<li><a href="Core_Animation" title="Core Animation">Core Animation</a></li>
<li><a href="Core_Video" title="Core Video">Core Video</a></li>
<li><a href="ColorSync" title="ColorSync">ColorSync</a></li>
<li><a href="QuickTime" title="QuickTime">QuickTime</a></li>
<li><a href="Metal_(API)" title="Metal (API)">Metal (API)</a></li></ul></td>
</tr><tr><th class="sidebar-heading" style="background:#ccffcc">
Compositing</th></tr><tr><td class="sidebar-content hlist">
<ul><li><a href="Quartz_Compositor" title="Quartz Compositor">Quartz Compositor</a></li></ul></td>
</tr><tr><td class="sidebar-navbar"><style data-mw-deduplicate="TemplateStyles:r1239400231">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}
/* end https://en.wikipedia.org/ */
</style></td></tr></tbody></table>
<p><b>QuickDraw</b> was the 2D <a href="Computer_graphics" title="Computer graphics">graphics</a> library and associated <a href="Application_programming_interface" class="mw-redirect" title="Application programming interface">application programming interface</a> (API) which is a core part of <a href="Classic_Mac_OS" title="Classic Mac OS">classic Mac OS</a>. It was initially written by <a href="Bill_Atkinson" title="Bill Atkinson">Bill Atkinson</a> and <a href="Andy_Hertzfeld" title="Andy Hertzfeld">Andy Hertzfeld</a>.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> QuickDraw still existed as part of the libraries of <a href="Mac_OS_X" class="mw-redirect" title="Mac OS X">Mac OS X</a>, but had been largely superseded by the more modern <a href="Quartz_(graphics_layer)" title="Quartz (graphics layer)">Quartz</a> graphics system. In <a href="Mac_OS_X_Tiger" title="Mac OS X Tiger">Mac OS X Tiger</a>, QuickDraw has been officially <a href="Deprecation" title="Deprecation">deprecated</a>. In <a href="Mac_OS_X_Leopard" title="Mac OS X Leopard">Mac OS X Leopard</a> applications using QuickDraw cannot make use of the added 64-bit support. In <a href="OS_X_Mountain_Lion" title="OS X Mountain Lion">OS X Mountain Lion</a>, QuickDraw header support was removed from the operating system. Applications using QuickDraw still ran under OS X Mountain Lion to macOS High Sierra; however, the current versions of Xcode and the macOS SDK do not contain the header files to compile such programs.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Principles_of_QuickDraw">Principles of QuickDraw</h2></div>
<p>QuickDraw was grounded in the <a href="Apple_Lisa" title="Apple Lisa">Apple Lisa</a>'s LisaGraf of the early 1980s and was designed to fit well with the <a href="Pascal_programming_language" class="mw-redirect" title="Pascal programming language">Pascal</a>-based interfaces and development environments of the early <a href="Apple_Computer" class="mw-redirect" title="Apple Computer">Apple</a> systems. In addition, QuickDraw was a <a href="Raster_graphics" title="Raster graphics">raster graphics</a> system, which defines the <a href="Pixel" title="Pixel">pixel</a> as its basic unit of graphical information. This is in contrast to <a href="Vector_graphics" title="Vector graphics">vector graphics</a> systems, where graphics primitives are defined in mathematical terms and rasterized as required to the display resolution. A raster system requires much less processing power however, and was the prevailing paradigm at the time that QuickDraw was developed.
</p><p>QuickDraw defined a key data structure, the graphics <i>port</i>, or GrafPort. This was a logical drawing area where graphics could be drawn. The most obvious on-screen "object" corresponding to a GrafPort was a <a href="Window_(computing)" title="Window (computing)">window</a>, but the entire desktop view could be a GrafPort, and off-screen ports could also exist.
</p><p>The GrafPort defined a <a href="Coordinate_system" title="Coordinate system">coordinate system</a>. In QuickDraw, this had a resolution of 16 <a href="Binary_digit" class="mw-redirect" title="Binary digit">bits</a>, giving 65,536 unique vertical and horizontal locations. These are numbered from -32,767 on the extreme left (or top), to +32,767 on the extreme right (or bottom). A window was usually set up so that the top, left corner of its content area was located at 0,0 in the associated GrafPort. A window's content area did not include the window's frame, <a href="Drop_shadow" title="Drop shadow">drop shadow</a> or title bar (if any).
</p><p>QuickDraw coordinates referred to the infinitely thin lines <i>between</i> <a href="Pixel" title="Pixel">pixel</a> locations. An actual pixel was drawn in the space to the immediate right and below the coordinate. This made it easier for programmers to avoid graphical glitches caused by <a href="Off-by-one_error" title="Off-by-one error">off-by-one errors</a>.
</p><p>On the Macintosh, pixels were square, and a GrafPort had a default resolution of 72 pixels per inch, chosen to match conventions established by the printing industry of having 72 <a href="Point_(typography)" title="Point (typography)">points</a> per inch.
</p><p>QuickDraw also contained a number of scaling and mapping functions.
</p><p>QuickDraw maintained a number of <a href="Global_variable" title="Global variable">global variables</a> per process, chief among these being the current port. This originally simplified the API, since all operations pertained to "the current port," but as the OS developed, this use of global state has also made QuickDraw much harder to integrate with modern design approaches such as <a href="Thread_(computing)" title="Thread (computing)">multi-threading</a> and <a href="Preemption_(computing)#Preemptive_multitasking" title="Preemption (computing)">pre-emptive multitasking</a>. To address these problems, the <a href="Carbon_(API)" title="Carbon (API)">Carbon</a> <a href="Application_programming_interface" class="mw-redirect" title="Application programming interface">API</a> (a bridge between Mac OS 9 and Mac OS X) added additional parameters to some of the routines, allowing for the (opaque) storage of thread information and a new (non-polled) event structure.
</p>
<div class="mw-heading mw-heading2"><h2 id="Graphics_primitives">Graphics primitives</h2></div>
<p>Everything seen on a classic Mac OS screen is drawn by QuickDraw, but the library itself is quite low level. The primitive objects it can draw are:
</p>
<ul><li>Lines</li>
<li>Rectangles</li>
<li>Rounded (and oval) cornered rectangles</li>
<li>Ovals (including circles and ellipses)</li>
<li>Arcs (and wedges), both circular and oval</li>
<li>Polygons (arbitrary closed shapes built from a list of points joined by lines)</li>
<li>Regions (arbitrary sets of pixels—see below)</li>
<li><a href="Bitmap" title="Bitmap">Bitmaps</a> and <a href="Pixmap" class="mw-redirect" title="Pixmap">Pixmaps</a></li>
<li>Text</li></ul>
<p>Each of these objects (except text) may be drawn using a "pen", which can have any rectangular dimensions, pattern or color. Note that, because the pen is rectangular and axis-aligned, diagonal lines will end up thicker than horizontal or vertical ones. Shapes may be drawn filled or framed, using any pattern or color. A filled Arc forms a wedge. Text may be drawn in any installed font, in a variety of stylistic variations, and at any size and color. Depending on how the selected font is stored, text can be scaled in a variety of ways - <a href="TrueType" title="TrueType">TrueType</a> fonts will scale smoothly to any size, whereas <a href="Computer_font#Bitmap_fonts" title="Computer font">bitmap fonts</a> do not usually scale well.
</p><p>An important feature of QuickDraw was support for <i>transfer modes</i>, which governed how a destination pixel value was related to its previous value and the color of the object being drawn.
</p><p>The set of attributes of the pen and text drawing are associated with the GrafPort.
</p><p><b>Regions</b> are a key data structure in QuickDraw. They define an arbitrary set of pixels, rather like a bitmap, but in a compressed form which can be very rapidly manipulated in complex ways. Regions can be combined (union), subtracted (difference), and <a href="Exclusive_or" title="Exclusive or">XORed</a> to form other Regions. They can be used within a GrafPort for <a href="Clipping_(computer_graphics)" title="Clipping (computer graphics)">clipping</a>, or drawn filled or framed like any other shape. A series of framed shapes and connected lines may be combined into a Region. A Region need not consist of a contiguous set of pixels - disconnected regions are possible and common. Although regions could allow powerful graphic manipulations they are limited by the current implementation that restricts the maximum region data storage size to a sixteen bit value and so are not practical as a general-purpose drawing composition tool and practical use at high resolution is also restricted. Regions underpin the rest of QuickDraw, permitting clipping to arbitrary shapes, essential for the implementation of multiple overlapping windows. Invented by Bill Atkinson, Regions were patented as a separate invention by Apple.<a rel="nofollow" class="external autonumber" href="https://web.archive.org/web/20150519163534/http://patft1.uspto.gov/netacgi/nph-Parser?Sect2=PTO1&Sect2=HITOFF&p=1&u=%2Fnetahtml%25%2FPTO%25%2Fsearch-bool.html&r=1&f=G&l=50&d=PALL&RefSrch=yes&Query=PN%2F4622545">[1]</a>
</p><p>A region is specified (after initial creation) by an <i>opening</i> of the region, drawing various QuickDraw shapes, and <i>closing</i> the region. Hidden routines construct the region as the QuickDraw commands are executed. Bitmaps may also be converted to regions, and bitmaps may be made from regions by "painting" or "filling" the region into a graphics port.
</p><p>The internal structure of a region, other than the storage length and its bounding rectangle, is opaque - there are no Apple-published documents available, though the mechanism is outlined in the patent. Regions are implemented using both vertical and horizontal <a href="Data_compression" title="Data compression">compression</a>. A region is stored as a series of horizontal scan lines ("<a href="Raster_graphics" title="Raster graphics">rasters</a>"), each of which contains a vertical coordinate followed by a list of horizontal inversion coordinates. Each inversion point can be thought of as toggling inclusion in the region for all the points after it: the first point turns the region on, the second turns it off, and so on. Further compression is achieved by storing each line differentially: each line contains only the differences from the previous line rather than a full set of inversion points. Finally, identical adjacent scan lines are efficiently encoded by simply skipping them. In this way, a commonly used region, the rounded corner rectangle, is efficiently encoded, and complex operations such as region composition and image clipping may be done without requiring either extensive processor cycles or large amounts of memory. (The original systems executing QuickDraw code used processors operating at 8 megahertz clock rates and systems had but 128 kilobytes of writable memory.)
</p><p>Because regions are bound to a specific orientation, a ninety degree rotation of a region would require both detailed <a href="Reverse_engineering" title="Reverse engineering">reverse engineering</a> of the structure and extensive coding. A general rotation is impractical when compared to rotating the original source boundary description and simply creating a new region. However, the API includes conversion routines to and from BitMaps. (Bitmaps may also be rotated using well known methods, but with various degrees of image degradation depending upon angle chosen, the storage and processor cycles available to the operation, and the complexity of the algorithm.)
</p><p>Apple has recently (in the <a href="Carbon_(API)" title="Carbon (API)">Carbon API</a>) defined regions as an opaque structure under some program compilation options.
</p>
<div class="mw-heading mw-heading2"><h2 id="Higher_level_operations">Higher level operations</h2></div>
<p>Any series of graphics calls to QuickDraw can be recorded in a structure called a <i>Picture</i>. This can then be saved in memory and "played back" at any time, reproducing the graphics sequence. At playback time the picture may be placed at new coordinates or scaled without the loss of resolution commonly encountered in bitmap scaling. A picture can be saved to disk in which form it defines the Apple <a href="PICT" title="PICT">PICT</a> format.
</p><p>An entire BitMap (or PixMap, when referring to color images) may be copied from one GrafPort to another, with scaling and clipping. Known as <a href="Bit_blit" title="Bit blit">blitting</a>, or <i>CopyBits</i>, after the name of the function, this operation is the basis for most animation and sprite-like effects on the Mac.
</p><p>QuickDraw provides a similar blitting function which is designed to implement scrolling within a GrafPort - the image in the port can be shifted to a new location without scaling (but with clipping if desired).
</p><p>Each graphics primitive operation is vectored through the StdProcs, a series of <a href="Function_pointer" title="Function pointer">function pointers</a> stored in the GrafPort. This limited <a href="Polymorphism_(computer_science)" title="Polymorphism (computer science)">polymorphism</a> permits individual operations to be overridden or replaced by custom functions, allowing <a href="Printer_(computing)" title="Printer (computing)">printer</a> drivers to intercept graphics commands and translate them to suitable printer operations. In this way, QuickDraw can be rendered using <a href="PostScript" title="PostScript">PostScript</a>, a fact that enabled the Macintosh to practically invent <a href="Desktop_publishing" title="Desktop publishing">desktop publishing</a>.
</p><p>Similar to a <a href="Inheritance_(object-oriented_programming)" title="Inheritance (object-oriented programming)">subclass</a>, the Window data structure began with the associated GrafPort, thus basically making windows exchangeable with any GrafPort. While convenient, this made it easy to write erroneous code that passed an offscreen graphics port into API that expected a full-blown window.
</p>
<div class="mw-heading mw-heading2"><h2 id="History">History</h2></div>
<p>QuickDraw started life as Lisa Graf as part of the <a href="Apple_Lisa" title="Apple Lisa">Apple Lisa</a> development. For the Macintosh it was initially simplified, but then later extended. Originally, QuickDraw GrafPorts only supported a bit depth of 1, that is one bit per pixel, or black and white. This suited the built-in screen of the early Macintosh, with its fixed size of 512×342 pixels. Limited color was supported using a crude <a href="Planar_(computer_graphics)" title="Planar (computer graphics)">planar</a> model, allowing QuickDraw to drive some types of <a href="Dot-matrix_printer" class="mw-redirect" title="Dot-matrix printer">dot-matrix printer</a> that used multi-colored ribbons, but very few applications supported this feature.
</p><p>In 1987, the <a href="Macintosh_II" title="Macintosh II">Macintosh II</a> was launched, which was designed as a more conventional three-box design - <a href="Desktop_computer" title="Desktop computer">Computer</a>, <a href="Computer_display" class="mw-redirect" title="Computer display">monitor</a> and <a href="Computer_keyboard" title="Computer keyboard">keyboard</a> all separate. Because the monitor was separate, and larger than the original Mac, the <a href="Video" title="Video">video</a> architecture had to necessarily change. In addition, the Mac II took the Macintosh from black-and-white to full color. Apple also decided at this time to support a seamless desktop spanning multiple monitors, an industry first. Thus Color QuickDraw, a significant extension of the original QuickDraw, was created. At this time Bill Atkinson was busy with <a href="HyperCard" title="HyperCard">HyperCard</a>, so the Color QuickDraw work was done by Ernie Beernink (then still 23 years old):<sup id="cite_ref-Levy_Mac_II_2-0" class="reference"><a href="#cite_note-Levy_Mac_II-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> Apple's Dave Allen also credited Dave Fung.<sup id="cite_ref-dobb's_hypercard_3-0" class="reference"><a href="#cite_note-dobb's_hypercard-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> The original architecture lacked much provision for expandability, but using a series of <a href="Hack_(computer_science)" class="mw-redirect" title="Hack (computer science)">hacks</a>, the Apple developers managed to make the addition of color and the new video architecture virtually seamless to both developers and end users.
</p><p>Color QuickDraw introduced new data structures, including GDevices to represent each attached video card/monitor, and a new color GrafPort (CGrafPort) structure to handle color, as well as PixMaps instead of BitMaps for multiple bits-per-pixel images. One of the hacks for compatibility used here was that the new structure was exactly the same size as the old one, with most data members in the same place, but with additional handles and pointers to color structures in place of the BitMap fields. The upper two bits of the <i>rowBytes</i> field were pressed into use as flags to distinguish a GrafPort from a CGrafPort (they were always zero on old-style GrafPorts because a BitMap could never feasibly be so wide as to ever set these bits). The use of these two high bits would come back to haunt QuickDraw later, as it forced a maximum row width of just 4,095 on 32-bit PixMaps, which became problematic for high-resolution graphics work. Later development (Mac OS 8.5/Carbon) eliminated this limitation but was not fully backward compatible. A Palette Manager was also added in Color QuickDraw which managed the arbitration of colors on indexed video devices. Most graphics primitives operations remained either unchanged (but would operate in color), or else new color versions of the black and white APIs were added.
</p><p>Initially, Color QuickDraw was only capable of operating with 1, 2, 4 and 8-bit video cards, which were all that was available at the time. Soon after however, 24-bit video cards appeared (so-called true color), and QuickDraw was updated again to support up to 32 bits per pixel (in reality, 24 bits, with 8 unused) of color data ("32-Bit QuickDraw"). The architecture always allowed for this, however, so no new APIs were necessary. The color data structures themselves allowed a color depth of 1, 2, 4, 8, 15 and 24 bits, yielding 2, 4, 16, 256, 32,768 and 16,777,216 colors respectively, or 4, 16 and 256 scales of grey. QuickDraw took care of managing the resampling of colors to the available color depths of the actual video hardware, or transfer between offscreen image buffers, including optionally <a href="Dither" title="Dither">dithering</a> images down to a lower depth to improve image quality. A set of color sampling utilities were also added so that programmers could generate optimal color palettes for use with indexed video devices.
</p><p>The architecture of QuickDraw had always allowed the creation of GrafPorts and their associated BitMaps or PixMaps "offscreen", where graphics could be composed in memory without it being visible immediately on the screen. Pixels could be transferred between these offscreen ports and the screen using the QuickDraw <a href="Bit_blit" title="Bit blit">blitting</a> function CopyBits. Such offscreen compositing is the workhorse for games and graphics-intensive applications. However, until the advent of 32-Bit QuickDraw, such offscreen worlds had to be created and set up by hand by programmers within their applications. This could be error-prone, as it involved three or more separate and fairly complex data structures (CGrafPort, PixMap and GDevice, and for indexed devices, the color look-up table and its inverse). With 32-Bit QuickDraw, OS support for handling this was added, with the "Offscreen Graphics World" or GWorld. The video buffer (PixMap) of a GWorld could be stored in main memory, or when available in unused parts of video ram where copying to the screen could be optimized for speed by avoiding the need to transfer a large amount of pixel data across the main memory bus.
</p><p>With the advent of <a href="QuickTime" title="QuickTime">QuickTime</a>, QuickDraw gained the ability to deal with compressed raster data, such as <a href="JPEG" title="JPEG">JPEG</a>. The QuickTime Image Compression Manager integrated closely with QuickDraw: in particular, image decompression calls were full-fledged QuickDraw drawing calls, and if a picture was being recorded, the <i>compressed</i> data would be saved as part of the picture, for display when the picture was later drawn. The Image Compression Manager also added integration with <a href="ColorSync" title="ColorSync">ColorSync</a> color matching.
</p><p>After this, apart from back-end changes to optimize for new processor architectures (<a href="PowerPC" title="PowerPC">PowerPC</a>), QuickDraw remained largely unchanged throughout the rest of the life of the classic Mac OS. <a href="QuickDraw_GX" title="QuickDraw GX">QuickDraw GX</a> and <a href="QuickDraw_3D" title="QuickDraw 3D">QuickDraw 3D</a> shared the QuickDraw name and were able to interoperate with QuickDraw PixMap and picture data structures, but were otherwise completely separate in functionality.
</p><p>With Mac OS X, QuickDraw became part of the <a href="Carbon_(API)" title="Carbon (API)">Carbon</a> <a href="Application_programming_interface" class="mw-redirect" title="Application programming interface">API</a>. In 2005, with the release of Mac OS X 10.4, QuickDraw was officially deprecated.
</p><p>In 2010 with <a href="MacPaint" title="MacPaint">MacPaint</a> 1.3's <a href="Source_code" title="Source code">source code</a> release through the <a href="Computer_History_Museum" title="Computer History Museum">Computer History Museum</a>,<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> a historical version of QuickDraw source code became available too.<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="Bresenham's_line_algorithm" title="Bresenham's line algorithm">Bresenham's line algorithm</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */
.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}
/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.folklore.org/StoryView.py?project=Macintosh&story=Negative_2000_Lines_Of_Code.txt">"Folklore: -2000 Lines of Code"</a>. <i>folklore.org</i>.</cite></span>
</li>
<li id="cite_note-Levy_Mac_II-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-Levy_Mac_II_2-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFLevy1987" class="citation magazine cs1"><a href="Steven_Levy" title="Steven Levy">Levy, Steven</a> (May 1987). <a rel="nofollow" class="external text" href="https://archive.org/details/MacWorld_8705_May_1987/page/n58">"The Making of the Macintosh II"</a>. <i>Macworld</i>. San Francisco: PCW Communications. pp. <span class="nowrap">55–</span>63. <a href="ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a> <a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/0741-8647">0741-8647</a><span class="reference-accessdate">. Retrieved <span class="nowrap">31 July</span> 2024</span>. p. 60: <q>A 23-year-old named Ernie Beernik [sic] brilliantly recrafted the QuickDraw graphics routines to accommodate color.</q></cite></span>
</li>
<li id="cite_note-dobb's_hypercard-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-dobb's_hypercard_3-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFAllen1988" class="citation magazine cs1">Allen, Dan (Summer 1988). <a rel="nofollow" class="external text" href="https://archive.org/details/dr_dobbs_journal_vol_13/page/753">"An Introduction to HyperCard Programming"</a>. <i><a href="Dr._Dobb's_Journal" title="Dr. Dobb's Journal">Dr. Dobb's Macintosh Special</a></i>. pp. <span class="nowrap">56–</span>74. <a href="ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a> <a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/1044-789X">1044-789X</a><span class="reference-accessdate">. Retrieved <span class="nowrap">2 August</span> 2024</span>. p. 64: <q>However, Bill was not involved with Color QuickDraw, which is found on the Mac II, because he was involved with HyperCard at the time. Ernie Beernink and Dave Fung did Color QuickDraw.</q></cite></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.computerhistory.org/highlights/macpaint/">"MacPaint and QuickDraw Source Code"</a>. <i><a href="Computer_History_Museum" title="Computer History Museum">Computer History Museum</a></i>. July 20, 2010.</cite></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><cite id="CITEREFHesseldahl2010" class="citation web cs1">Hesseldahl, Erik (2010-07-20). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20120209010310/http://www.businessweek.com/technology/ByteOfTheApple/blog/archives/2010/07/apple_donates_macpaint_source_code_to_computer_history_museum.html">"Apple Donates MacPaint Source Code To Computer History Museum"</a>. businessweek.com. Archived from <a rel="nofollow" class="external text" href="http://www.businessweek.com/technology/ByteOfTheApple/blog/archives/2010/07/apple_donates_macpaint_source_code_to_computer_history_museum.html">the original</a> on 2012-02-09<span class="reference-accessdate">. Retrieved <span class="nowrap">2014-08-23</span></span>.</cite></span>
</li>
</ol></div></div>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><cite id="CITEREFApple_Computer,_Inc." class="citation book cs1"><a href="Apple_Inc." title="Apple Inc.">Apple Computer, Inc.</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20130517071857/http://developer.apple.com/legacy/library/documentation/mac/pdf/ImagingWithQuickDraw.pdf"><i>Imaging With QuickDraw</i></a> <span class="cs1-format">(PDF)</span>. Archived from <a rel="nofollow" class="external text" href="https://developer.apple.com/legacy/mac/library/documentation/mac/pdf/ImagingWithQuickDraw.pdf">the original</a> <span class="cs1-format">(PDF)</span> on 2013-05-17<span class="reference-accessdate">. Retrieved <span class="nowrap">2018-03-09</span></span>.</cite> - original QuickDraw documentation from developer.apple.com</li>
<li><cite id="CITEREFApple_Computer,_Inc." class="citation book cs1"><a href="Apple_Inc." title="Apple Inc.">Apple Computer, Inc.</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20140418225700/https://developer.apple.com/legacy/library/documentation/Carbon/reference/QuickDraw_Ref/QuickDraw_Ref.pdf"><i>QuickDraw Reference (Legacy)</i></a> <span class="cs1-format">(PDF)</span>. Archived from <a rel="nofollow" class="external text" href="https://developer.apple.com/legacy/mac/library/documentation/Carbon/reference/QuickDraw_Ref/QuickDraw_Ref.pdf">the original</a> <span class="cs1-format">(PDF)</span> on 2014-04-18<span class="reference-accessdate">. Retrieved <span class="nowrap">2018-03-09</span></span>.</cite> - later QuickDraw documentation from developer.apple.com</li>
<li><a rel="nofollow" class="external text" href="https://web.archive.org/web/20110131113736/http://developer.apple.com/macos/quickdraw.html">QuickDraw</a> - list of QuickDraw resources from developer.apple.com</li>
<li><a rel="nofollow" class="external text" href="https://www.folklore.org/StoryView.py?project=Macintosh&story=Round_Rects_Are_Everywhere.txt&topic=QuickDraw">Folklore.org: Macintosh Stories: Round Rects Are Everywhere!</a>, May 1981, story about creating QuickDraw</li>
<li><a rel="nofollow" class="external text" href="http://www.computerhistory.org/highlights/macpaint/">MacPaint and QuickDraw source code</a>, <a href="Computer_History_Museum" title="Computer History Museum">Computer History Museum</a></li>
<li><a rel="nofollow" class="external text" href="https://www.folklore.org/StoryView.py?project=Macintosh&story=Negative_2000_Lines_Of_Code.txt&sub=HN0">-2000 Lines Of Code</a></li></ul>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1236075235">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox" aria-labelledby="Classic_Mac_OS73" style="padding:3px"><table class="nowraplinks mw-collapsible mw-collapsed navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><div id="Classic_Mac_OS73" style="font-size:114%;margin:0 4em"><a href="Classic_Mac_OS" title="Classic Mac OS">Classic Mac OS</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">Versions</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="System_1" title="System 1">System 1</a></li>
<li><a href="Classic_Mac_OS#System_1,_2,_3_and_4" title="Classic Mac OS">System 2, 3, and 4</a></li>
<li><a href="Classic_Mac_OS#System_Software_5" title="Classic Mac OS">System 5</a></li>
<li><a href="System_6" title="System 6">System 6</a></li>
<li><a href="System_7" title="System 7">System 7</a>
<ul><li>Mac OS 7</li></ul></li>
<li><a href="Mac_OS_8" title="Mac OS 8">Mac OS 8</a></li>
<li><a href="Mac_OS_9" title="Mac OS 9">Mac OS 9</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Applications</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Calculator_(Apple)" title="Calculator (Apple)">Calculator</a></li>
<li><a href="Chooser_(Mac_OS)" title="Chooser (Mac OS)">Chooser</a></li>
<li>Drive Setup</li>
<li><a href="DVD_Player_(macOS)" class="mw-redirect" title="DVD Player (macOS)">DVD Player</a></li>
<li><a href="Finder_(software)" title="Finder (software)">Finder</a></li>
<li><a href="NuCalc" title="NuCalc">Graphing Calculator</a></li>
<li><a href="Keychain_(software)" title="Keychain (software)">Keychain Access</a></li>
<li><a href="QuickTime" title="QuickTime">PictureViewer</a></li>
<li><a href="Apple_Open_Collaboration_Environment" title="Apple Open Collaboration Environment">PowerTalk</a></li>
<li><a href="QuickTime" title="QuickTime">QuickTime Player</a></li>
<li><a href="Network_Browser" title="Network Browser">Network Browser</a></li>
<li><a href="Scrapbook_(Mac_OS)" title="Scrapbook (Mac OS)">Scrapbook</a></li>
<li><a href="Sherlock_(software)" title="Sherlock (software)">Sherlock</a></li>
<li><a href="Apple_Software_Update" class="mw-redirect" title="Apple Software Update">Software Update</a></li>
<li><a href="Stickies_(Apple)" title="Stickies (Apple)">Stickies</a></li>
<li><a href="System_Information_(Mac)" class="mw-redirect" title="System Information (Mac)">System Information</a></li>
<li><a href="SimpleText" title="SimpleText">SimpleText</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Developer</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="HyperCard" title="HyperCard">HyperCard</a></li>
<li><a href="MacsBug" title="MacsBug">MacsBug</a></li>
<li><a href="Macintosh_Programmer's_Workshop" title="Macintosh Programmer's Workshop">Macintosh Programmer's Workshop</a></li>
<li><a href="ResEdit" title="ResEdit">ResEdit</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Technology</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Alias_(Mac_OS)" title="Alias (Mac OS)">Alias</a></li>
<li><a href="Appearance_Manager" title="Appearance Manager">Appearance Manager</a></li>
<li><a href="Apple_menu" title="Apple menu">Apple menu</a></li>
<li><a href="At_Ease" title="At Ease">At Ease</a></li>
<li><a href="Balloon_help" title="Balloon help">Balloon help</a></li>
<li><a href="Bomb_(icon)" title="Bomb (icon)">Bomb error</a></li>
<li><a href="Command_key" title="Command key">Command key (⌘)</a></li>
<li><a href="System_Preferences" class="mw-redirect" title="System Preferences">Control Panel</a></li>
<li><a href="Control_Strip" title="Control Strip">Control Strip</a></li>
<li><a href="Creator_code" title="Creator code">Creator code</a></li>
<li><a href="Dogcow" title="Dogcow">Dogcow</a></li>
<li><a href="Extension_(Mac_OS)" title="Extension (Mac OS)">Extensions</a></li>
<li><a href="Hierarchical_File_System_(Apple)" title="Hierarchical File System (Apple)">Hierarchical File System</a></li>
<li><a href="HFS_Plus" title="HFS Plus">HFS Plus</a></li>
<li><a href="Keychain_(software)" title="Keychain (software)">Keychain</a></li>
<li><a href="Label_(Mac_OS)" title="Label (Mac OS)">Labels</a></li>
<li><a href="Macintosh_File_System" title="Macintosh File System">Macintosh File System</a></li>
<li><a href="Macintosh_Toolbox" title="Macintosh Toolbox">Macintosh Toolbox</a></li>
<li><a href="Manager_(Mac_OS)" title="Manager (Mac OS)">Managers</a></li>
<li><a href="MultiFinder" title="MultiFinder">MultiFinder</a></li>
<li><a href="Multiprocessing_Services" title="Multiprocessing Services">Multiprocessing Services</a></li>
<li><a href="Option_key" title="Option key">Option key (⌥)</a></li>
<li><a href="OSType" class="mw-redirect" title="OSType">OSType</a></li>
<li><a href="PICT" title="PICT">PICT</a></li>
<li><a href="QuickTime" title="QuickTime">QuickTime</a></li>
<li><a href="Resource_fork" title="Resource fork">Resource fork</a></li>
<li><a href="Sosumi" title="Sosumi">Sosumi sound</a></li>
<li><a href="Macintosh_startup" title="Macintosh startup">Startup sequence</a></li>
<li><a href="System_folder" title="System folder">System folder</a></li>
<li><a href="System_suitcase" title="System suitcase">System suitcase</a></li>
<li><a href="Type_code" class="mw-redirect" title="Type code">Type code</a></li>
<li><a href="WorldScript" title="WorldScript">WorldScript</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Related articles</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Mac_OS_memory_management" class="mw-redirect" title="Mac OS memory management">Memory management</a></li>
<li><a href="Old_World_ROM" title="Old World ROM">Old World ROM</a></li>
<li><a href="New_World_ROM" title="New World ROM">New World ROM</a></li>
<li><a href="List_of_Classic_Mac_OS_software" title="List of Classic Mac OS software">Software</a></li>
<li><a href="Mac_transition_to_PowerPC_processors" title="Mac transition to PowerPC processors">Transition to PowerPC</a></li></ul>
</div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-05-28" href="https://en.wikipedia.org/wiki/?title=QuickDraw&oldid=1292715501">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>